#region Header Licence
//  NKnobMan, Copyright 2009, Alexandre MUTEL.
// 
//  This is free software; you can redistribute it and/or modify it
//  under the terms of the GNU Lesser General Public License as
//  published by the Free Software Foundation; either version 2.1 of
//  the License, or (at your option) any later version.
// 
//  This software is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
//  Lesser General Public License for more details.
// 
//  You should have received a copy of the GNU Lesser General Public
//  License along with this software; if not, write to the Free
//  Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
//  02110-1301 USA, or see the FSF site: http://www.fsf.org.
#endregion

using System.Drawing;
using System.Runtime.Serialization;

namespace NKnobMan
{
    [DataContract]
    public class LayerPrimitive : LayerItem
    {
        public LayerPrimitive(Layer layer) : base(layer)
        {
        }

        //"Color" :Color parameter for primitives 
        //"Text" :Text parameter for 'Text' primitive 
        //"Shape" :Shape parameter for 'Shape' primitive 
        //"Font" :Font parameter for 'Text' primitive 
        //"File" :Filename for 'Image' primitive 
        //"FontSize" :FontSize parameter for 'Text' primitive 
        //"Italic" :Italic parameter for 'Text' primitive 
        //"Bold" :Bold parameter for 'Text' primitive 
        //"PrimFill" :Fill parameter for 'Shape' primitive 
        //"PrimGridSize" :GridSize parameter for 'Shape' primitive 
        //"PrimGridVisible" :Grid Visible parameter for 'Shape' primitive 
        //"PrimGridEnable" :Grid Enable parameter for 'Shape' primitive 
        //"Aspect" :Aspect parameter for primitives 
        //"Emboss" :Emboss parameter for primitives 
        //"TextureType" :Texture Type parameter for primitives 
        //"Texture" :Texture parameter for primitives 
        //"TexZoom" :Texture Zoom parameter for primitives 
        //"Specular" :Specular parameter for primitives 
        //"Diffuse" :Diffuse parameter for primitives 
        //"Width" :Width prameter for primitives 
        //"Ambient" :Ambient parameter for 'Sphere' primitive 
        //"AngleStep" :Angle Step parameter for 'RadLine' or 'WaveCircle' primitives 
        //"SpecularWidth" :Specular Width parameter for primitives 
        //"Round" :Round parameter for primitives 
        //"Length" :Length parameter for primitives 
        
        [DataMember, KnobManField("Color")]
        public Color Color
        {
            get { return Layer.GetValue<Color>("Color"); }
            set { Layer.SetValue("Color", value); }
        }

        [DataMember, KnobManField("TexZoom")]
        public int TextureZoom
        {
            get { return Layer.GetValue<int>("TexZoom"); }
            set { Layer.SetValue("TexZoom", value); }
        }

        [DataMember, KnobManField("Diffuse")]
        public int Diffuse
        {
            get { return Layer.GetValue<int>("Diffuse"); }
            set { Layer.SetValue("Diffuse", value); }
        }

        [DataMember, KnobManField("Specular")]
        public int Specular
        {
            get { return Layer.GetValue<int>("Specular"); }
            set { Layer.SetValue("Specular", value); }
        }

        [DataMember, KnobManField("Round")]
        public int Round
        {
            get { return Layer.GetValue<int>("Round"); }
            set { Layer.SetValue("Round", value); }
        }

        [DataMember, KnobManField("Emboss")]
        public int Emboss
        {
            get { return Layer.GetValue<int>("Emboss"); }
            set { Layer.SetValue("Emboss", value); }
        }

        [DataMember, KnobManField("Length")]
        public int Length
        {
            get { return Layer.GetValue<int>("Length"); }
            set { Layer.SetValue("Length", value); }
        }

        [DataMember, KnobManField("Aspect")]
        public int Aspect
        {
            get { return Layer.GetValue<int>("Aspect"); }
            set { Layer.SetValue("Aspect", value); }
        }
    }
}